let arr = [5, 3, 2, 4, 1]
// 循环取到数组中的每一个元素，当取到某一个元素X时，
// 再次循环取剩下的所有元素依次跟当前这个X对比，
// 比X小的放X左边，比X大的放X右边

function bubbleSort(arr) {
    // 获取到数组的长度
    const len = arr.length
    for(let i = 0; i < len; i++) {
        for(let j = i + 1; j < len ; j++){
            if(arr[i] > arr[j]) {
                let count;
                count = arr[i];
                arr[i] = arr[j];
                arr[j] = count;

                // [arr[i], arr[j]] = [arr[j], arr[i]]
            }
            console.log(arr);
        }
    }
    return arr;
}

let newArr = bubbleSort(arr);
console.log(newArr);//  [1, 2, 3, 4, 5]
// 第一次循环
// [5, 3, 2, 4, 1]
// [3, 5, 2, 4, 1]
// [2, 5, 3, 4, 1]
// [2, 5, 3, 4, 1]
// [1, 5, 3, 4, 2]
// 第二次循环
// [1, 5, 3, 4, 2]
// [1, 3, 5, 4, 2]
// [1, 3, 5, 4, 2]
// [1, 2, 5, 4, 3]
// 第三次循环
// [1, 2, 5, 4, 3]
// [1, 2, 4, 5, 3]
// [1, 2, 3, 5, 4]
// 第四次循环
// [1, 2, 3, 5, 4]
// [1, 2, 3, 4, 5]



// 冒泡排序
var arr = [3, 4, 1, 2];
function bubbleSort (arr) {
  var max = arr.length - 1;
  for (var j = 0; j < max; j++) {
    // 声明一个变量，作为标志位
    var done = true;
    for (var i = 0; i < max - j; i++) {
      if (arr[i] > arr[i + 1]) {
        var temp = arr[i];
        arr[i] = arr[i + 1];
        arr[i + 1] = temp;
        done = false;
      }
    }
    if (done) {
      break;
    }
  }
  return arr;
}
bubbleSort(arr);
